home *** CD-ROM | disk | FTP | other *** search
Modula Implementation | 1994-01-27 | 3.3 KB | 131 lines |
- IMPLEMENTATION MODULE AMMenu;
-
- (* AMMenu prepares the menu and does all menu functions for Automata.
-
- Version 2.1B by Mike Dryja February 21, 1987 *)
-
- FROM AMSetUp IMPORT AMWindow;
- FROM SYSTEM IMPORT ADR, ADDRESS, BYTE, NULL;
- FROM Menus IMPORT SetMenuStrip, OnMenu, OffMenu, HighComp;
- FROM Intuition IMPORT Window, WindowPtr, MenuEnabled, MenuFlagSet, Menu,
- MenuItem, IntuitionText, ItemFlagSet, ItemText,
- ItemEnabled, IntuiMessagePtr, CheckIt, Checked;
- FROM GraphicsLibrary
- IMPORT Jam1;
-
- VAR
- ItemString : ARRAY[0..6] OF ARRAY[0..15] OF CHAR;
- MenuString : ARRAY[0..1] OF ARRAY[0..10] OF CHAR;
- AMItem : ARRAY[0..6] OF MenuItem;
- AMMenu : ARRAY[0..1] OF Menu;
- AMText : ARRAY[0..6] OF IntuitionText;
-
- PROCEDURE InitMenu ();
- VAR
- i : CARDINAL;
- BEGIN
- MenuString[0] := "Project";
- MenuString[1] := "Scroll";
- FOR i := 0 TO 1 DO
- IF i < 1 THEN
- AMMenu[i].NextMenu := ADR(AMMenu[i+1]);
- ELSE
- AMMenu[i].NextMenu := NULL;
- END;
- WITH AMMenu[i] DO
- TopEdge := 0;
- Height := 10;
- Flags := MenuFlagSet {MenuEnabled};
- MenuName := ADR(MenuString[i]);
- END;
- END;
- AMMenu[0].LeftEdge := 2;
- AMMenu[1].LeftEdge := 66;
- AMMenu[0].Width := 64;
- AMMenu[1].Width := 56;
- FOR i := 0 TO 6 DO
- IF (i < 4) OR (i = 5) THEN
- AMItem[i].NextItem := ADR (AMItem[i+1]);
- ELSE
- AMItem[i].NextItem := NULL;
- END;
- IF i > 4 THEN
- AMItem[i].MutualExclude := LONGINT(7 - i);
- ELSE
- AMItem[i].MutualExclude := 0;
- END;
- AMItem[i].SubItem := NULL;
- AMItem[i].ItemFill := ADR (AMText[i]);
- AMItem[i].SelectFill := NULL;
- END;
- AMMenu[0].FirstItem := ADR (AMItem[0]);
- AMMenu[1].FirstItem := ADR (AMItem[5]);
- FOR i := 0 TO 4 DO
- WITH AMItem[i] DO
- LeftEdge := 0;
- TopEdge := (i * 10);
- Width := 64;
- Height := 10;
- END;
- END;
- FOR i := 5 TO 6 DO
- WITH AMItem[i] DO
- LeftEdge := 0;
- TopEdge := ((i - 5) * 10);
- Width := 72;
- Height := 10;
- END;
- END;
- FOR i := 0 TO 4 DO
- WITH AMItem[i] DO
- Flags := ItemFlagSet {ItemText, ItemEnabled} + HighComp;
- END;
- END;
- FOR i := 5 TO 6 DO
- WITH AMItem[i] DO
- IF (i = 5) THEN
- Flags := ItemFlagSet {CheckIt, ItemText, ItemEnabled, Checked} +
- HighComp;
- ELSE
- Flags := ItemFlagSet {CheckIt, ItemText, ItemEnabled} + HighComp;
- END;
- END;
- END;
- ItemString[0] := "About";
- ItemString[1] := "Rule";
- ItemString[2] := "Pause";
- ItemString[3] := "Restart";
- ItemString[4] := "Quit";
- ItemString[5] := " Coarse";
- ItemString[6] := " Smooth";
- FOR i := 0 TO 6 DO
- WITH AMText[i] DO
- FrontPen := BYTE(0);
- BackPen := BYTE(1);
- DrawMode := BYTE(Jam1);
- LeftEdge := 0;
- TopEdge := 1;
- ITextFont := NULL;
- IText := ADR(ItemString[i]);
- NextText := NULL;
- END;
- END;
- SetMenuStrip(AMWindow^, AMMenu[0]);
- END InitMenu;
-
- PROCEDURE Toggle (Choice : ToggleChoices);
- BEGIN
- IF Choice = Pause THEN
- ItemString[2] := "Pause";
- ELSIF Choice = Resume THEN
- ItemString[2] := "Resume";
- ELSIF Choice = Disable THEN
- OffMenu (AMWindow^, 64);
- ELSIF Choice = Enable THEN
- OnMenu (AMWindow^, 64);
- END;
- END Toggle;
-
- END AMMenu.
-
-